//
// Created by 罗俊华 on 2022/1/21.
//


#ifndef CPP_LEARNING_MY_NODE_H
#define CPP_LEARNING_MY_NODE_H

#include "item_define.h"
//#include "my_queue.h"

class Node {
private:
    Item *item;
    Node *next;
public:
    explicit Node(const Item &new_item);

    ~Node();

    /**
     * 为新的 item 创建一个 Node
     * 并将当前节点的下一个指针(*next)指向新创建的节点
     * 同时返回新创建的节点的指针，用于更新队列的 last 指针
     * */
    Node *append(const Item &next_item);

    /**
     * 获取本节点的下一个节点的指针
     * */
    Node *getNextNode();

    /*
     * 获取当前 Node 中存储的 元素
     * 在出队的情况下，因为获取了元素之后可能要删除整个 Node
     * 所以出队的item 是以拷贝的方式出队的
     * */
    Item getCurrentItem();
};

#endif //CPP_LEARNING_MY_NODE_H
